//
// Created by Zhangwj on 2023/9/25.
//

#include "ConstDeclNode.h"

std::unique_ptr<ConstDeclNode> ConstDeclNode::ConstDeclParser(Parser &parser) {
    //ConstDecl → 'const' BType ConstDef { ',' ConstDef } ';'
    auto constDeclNode = std::make_unique<ConstDeclNode>();
    if (parser.getLexType(0) == LexType::CONSTTK) {
        parser.next();
    }
    constDeclNode->BType = BTypeNode::BTypeParser(parser);
    constDeclNode->ConstDefNodes.push_back(ConstDefNode::ConstDefParser(parser));
    while (parser.getLexType(0) == LexType::COMMA) {
        parser.next();
        constDeclNode->ConstDefNodes.push_back(ConstDefNode::ConstDefParser(parser));
    }
    if (parser.getLexType(0) == LexType::SEMICN) {
        parser.next();
    }
    return constDeclNode;
}
